{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ALD Classification - \n",
    "Anthony DiBenedetto\n",
    "\n",
    "This program uses Random Forest (rf) to classify the ALD data. The accuracy of the classification is caculated and printed out in on the of the bottom cells. Also shown is a confusion matrix of the classification to show the accuracy of the classification. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import Libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the training and test data\n",
    "training_data = (np.load('ALD_Classification_dataset/training_data.npy'))\n",
    "training_labels = (np.load('ALD_Classification_dataset/training_labels.npy'))\n",
    "\n",
    "testing_data = (np.load('ALD_Classification_dataset/testing_data.npy'))\n",
    "testing_labels = (np.load('ALD_Classification_dataset/testing_labels.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = training_data\n",
    "y_train = training_labels\n",
    "\n",
    "X_test = testing_data\n",
    "y_test = testing_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(class_weight=&#x27;balanced&#x27;, max_depth=25, n_estimators=250,\n",
       "                       random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(class_weight=&#x27;balanced&#x27;, max_depth=25, n_estimators=250,\n",
       "                       random_state=42)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier(class_weight='balanced', max_depth=25, n_estimators=250,\n",
       "                       random_state=42)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Initialize the random forest classifier and fit the model with the training data\n",
    "rfc = RandomForestClassifier(n_estimators=250, max_depth=25, max_features='sqrt', class_weight= \"balanced\" , random_state=42)\n",
    "rfc.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import plot_tree\n",
    "# Choose one tree from the forest\n",
    "chosen_tree = rfc.estimators_[5]\n",
    "\n",
    "plt.figure(figsize=(20,10))\n",
    "plot_tree(chosen_tree, filled=True, feature_names=feature_names, class_names=['Class 0', 'Class 1'], rounded=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use the model to predict 0 or 1 from the X_test\n",
    "y_pred = rfc.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 99.00%\n",
      "Confusion matrix:\n",
      " [[613   6]\n",
      " [  4 377]]\n"
     ]
    }
   ],
   "source": [
    "# Generate the accuracy from the predicted y values (y_pred) and y_test \n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(\"Accuracy: {:.2f}%\".format(accuracy*100))\n",
    "\n",
    "# Generate the confusion matrix from predicted y values (y_pred) and y_test \n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "print(\"Confusion matrix:\\n\", cm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ADANw6PWIdMGAADgAsi0AQAA05Bosw6ZNgAAABdApg0AAJiH1aOWIWgDAACmYSGCdRgeBQAAcAFk2gAAgGlItFmHTBsAAIALINMGAADMw0IEyxC0AQAA07AQwToMjwIAALgAMm0AAMA0NoZHLUOmDQAAwAWQaQMAAOYh0WYZgjYAAGAaFiJYh+FRAAAAF5Bjpm379u03deN69erd1PUAAMD1sBDBOjkGbc8991yeU5w2m0379u3Lc6cAAADMtGLFCi1evFi7d+9WbGysihcvrsqVK6t169bq2LGjSpUqZWp7KSkpWrZsmf773//qwIEDOn/+vDw9PVW5cmU1adJEPXr0UMWKFXN1zxyDtgcffPCmOwwAAO4sBW1O28WLFzVkyBCtW7fOoTwmJkYxMTEKCwvT9OnTNW7cODVr1syUNvfv369///vfOnjwoEP51atXdeDAAR04cEBz5szRe++9p2effdbp++YYtM2ePTvvvQUAAHemAhSzJSUl6cUXX1RYWJhRVqtWLd19992KiYnRhg0blJSUpOjoaPXv318zZ85UgwYNbqrNPXv2qE+fPrp48aIkyc3NTXXr1lWVKlUUExOjzZs368qVK7py5YpGjBghDw8PPf30007dm9WjAADgtjRlyhQjYPPx8dHkyZMVHBxsfB8VFaWhQ4dq8+bNSk5O1uDBg7VixQoVKVIkT+1dvnxZr7/+uhGwBQQE6NNPP1WNGjWMOufOndOwYcO0efNm2e12ffDBB2ratKlKly59w/vnevVoeHi43n//fbVt21Z169bV8OHDJUmjR4/W999/L7vdnttbAgCA24TNZrPkk1uRkZEKCQkxzidOnOgQsElSmTJl9PXXXyswMFBSehB3MyONX375pU6dOiVJqlGjhkJCQhwCNkkqW7asvvrqK5UvX16SdOnSJS1cuNCp++cqaJs3b546dOiguXPn6ujRo7p8+bLS0tIkSRs2bNCHH36oQYMGGWUAAAD5YdGiRUpKSpIkNWzYUE2bNs22nre3t5GAkqSffvopT+0lJSXpxx9/NM7ff//9HBc3FC1aVM8995xxvnbtWqfacDpo27Jli95//30VK1ZM7777rn7//XeH74cPH64KFSpoxYoVWrJkibO3BQAAtxGbzZpPboWGhhrHTz755HXrNmrUSH5+fpKkU6dOac+ePblub82aNcawaNOmTdWwYcPr1m/btq369++vESNGqHfv3k614XTQNm3aNLm7u2vGjBnq3r27/P39Hb5v3ry5Zs2aJU9PT82bN8/Z2wIAAJjq8uXL2rt3r3F+7bDotWw2m8P+shs2bMh1m6tWrTKO27Rpc8P6VapU0aBBg9SrVy89+uijTrXh9EKEXbt2qUGDBgoKCsqxTuXKlfXggw86/FAAAODOURB2/AgPDzemanl5ealKlSo3vCbz3LNDhw7lus3M23vUqVMn19c7w+mg7erVq06tpvDw8NCVK1duqlMAAMA1FYR92jIWA0hSpUqVnOpTxsKAa693ht1uV3h4uHFetWpVSdLJkye1YMECrVq1SqdOnZLdblflypXVsmVL9e7dO9cb+jodtFWtWlW7d+9WUlKSvLy8sq1z5coV7d6926mIFgAAwArR0dHGccZctRvx9fU1ji9cuJDr9hITEyVJJUuWlJeXl2bOnKlPPvlEV69edah78OBBHTx4UHPmzNFHH32kxx9/3Ol2nJ7T1q5dO50/f17vv/++sRojs6SkJI0aNUqxsbFq3bq10x0AAAC3D6sWIly8eFERERFZPhmT/zNLSEgwjgsVKuRUv729vbO93hnx8fEO7X3xxRcaO3asrl69qpIlS6pVq1bq2LGjHnzwQbm7u0tK3+pj0KBBWrZsmdPtOJ1p69Onj5YvX67Fixdr/fr1ql27tqT0iPHdd9/Vxo0bdfLkSdWoUUN9+vRxugMAAAA3EhISoqlTp2YpHzBggAYOHOhQljm55GzQ5uHxT0iUnJycq75lDvJiY2M1efJkSemx06BBgxyml/39998aNmyY9u7dq7S0NI0YMUK1atVyapTS6aCtUKFCCgkJ0ejRo7Vs2TItX75c0j9pPklq2bKlxowZo6JFizp7WwAAcBuxak5b79699cwzz2QpL1GiRJYyN7d/BhIzMlu5kfl6Z1y+fNk4zgj4XnnlFQ0dOjRL3bvuukshISF6+umnderUKSUmJurrr7/WmDFjbthOrl5jVbx4cU2YMEFvvPGGtm7dqjNnzigtLU1lypRRgwYNmMsGAMAdzqp1CCVKlMg2QMtO5qHOlJQUp67JXC+nufs5ubZ++fLls2T/MitevLiGDBmiN954Q5L022+/aeTIkQ7Zvuzk6d2j5cqVU7t27fJyKQAAgKUyB20ZCwRuJHO9zNc749oRxtatW8vT0/O61zz66KPy8PBQSkqKEhMTtW/fPj3wwAPXvSbXQdvp06e1cOFCbd26VefOnZOHh4fKly+vhg0bqmPHjrlevgoAAG4fBWHLDx8fH+M4NjbWqWsy18ttLFOsWDGH83vuueeG1xQpUkQVK1bUiRMnJKW/SP5GchW0/fjjjxo3bpySkpIcXgx/+PBhrVu3TtOmTdO4ceP0yCOP5Oa2AAAApqlevbpxfPbsWaeuyVyvUqVKuWqvbNmy8vb2NrJ1zs6jy7xAwZmMoNMz7dasWaNRo0ZJSl8NMXv2bK1YsULLly/XjBkz1KVLFyUkJGjQoEF5emcXAABwfQXh3aP+/v7G8GRcXJyioqJueE3mzXEDAgJy+cw23X333cZ5ZGSkU9dl3q6kZMmSN6zvdND2zTffyMPDQ999953eeustPfjgg6pSpYqqVq2qRo0aaeTIkZoyZYpSUlL02WefOXtbAABwG7FZ9E9ueHh4qGbNmsb59u3br1vfbrdr27Ztxnn9+vVz99CSsRWaJG3cuPGG9S9cuOCQ3csc9OXE6aBtz549evDBB9WgQYMc67Rq1Ur169d3eHAAAIBbLfNG/0uXLr1u3fXr1xtvUShbtqxDwOesJ5980jjesmWLjh8/ft36v/32mzHVrHr16k4NyTodtHl5ealw4cI3rJd58h8AALizFIThUUlq06aNMUT6xx9/aO3atdnWS0xM1Pjx443zzp0753qfNin9JfEZw6qpqakaOXJkjtuNnDt3zmGj4C5dujjVhtO9atGihTZu3KjTp0/nWCcmJkabN29W48aNnb0tAACA6cqXL2+8oclut2vw4MEKDQ11qHP+/Hn169fPeElA6dKls32rU0REhAIDA43PokWLsm3zgw8+MAK+9evXq3///lkWQhw6dEi9evVSTEyMpPT5c88995xTz+T06tG33npLO3fuVI8ePfTGG2/oiSeecIhEw8LC9N5776lYsWJ65513nL0tAAC4jRSAHT8Mr776qtauXav9+/crPj5e/fv3V1BQkIKCghQXF6f169cbL3T38PDQhAkTsmzfkRt16tTRiBEjNGbMGNntdq1evVqPPvqoGjRooAoVKigiIkLbtm1TamqqpPStQsaPH+/0Zr45Bm3Zjefa7XalpaVp2LBheuutt1S2bFkVLlxYUVFRxstSy5QpoxdffFG//fZbXp4XAADAFN7e3poxY4YGDx5sLA44cOCADhw44FCvRIkSGjdunJo0aXLTbfbo0UO+vr764IMPFBsbq+TkZG3YsCFLvapVq+rLL790agFChhyDthu99iElJSXbodJz5845tUEcAAC4/RSEzXUz8/X1VUhIiJYvX66lS5cqLCxM0dHR8vLyUrVq1dS8eXN1795dfn5+prXZrl07NWnSRIsWLVJoaKiOHz+u2NhYFS1aVIGBgXriiSf0r3/9y+mX2Wew2TPvknsHaGF7L7+7ANyRQpNH5ncXgDuSu0fuJ9XfjEkTVlty3yFvNrfkvq7k1v5JAgAAIE9MDdquXr2qiIgIzZ4928zbAgAAV1FQ9vy4DeXq3aPff/+9Zs+erTNnzig5Ofm6dXv27HlTHQMAAMA/nA7afvvtN40ZM8Y4t9lsstvtcnd3N5auSpKfn5/atGljbi8BAIBLIClmHaeHR3/66SfZbDa9/fbb2rFjh9599125ublp5cqV2rZtmyZPniw/Pz8lJyfrpZdesrLPAACggLLZbJZ8kIug7eDBg6pRo4Z69+6tIkWKqF69ekpLS9PGjRtVtGhRtW7dWlOnTlVcXJymTZtmZZ8BAADuOE4HbYmJiapevbpxXr16ddlsNocN6urUqaP7779fW7ZsMbeXAADAJbAOwTpOB20lSpTQ5cuXjXMvLy+VK1dOhw8fdqhXuXJlnTlzxrweAgAAwPmFCPfee6+2b9+uuLg4lSxZUpJUo0YN7d69W6mpqXJ3d5cknT592uGdpAAA4M7B/DPrOB1dPfvss0pISFCXLl20fPlySdIjjzyiuLg4jRw5UseOHdP06dO1e/du3XPPPZZ1GAAAFFwMj1rH6aCtbdu26tq1q44dO6Zff/1VkvSvf/1LVapU0YIFC9SmTRtNmDBBkvTKK69Y01sAAIA7VK421x05cqSeffZZxcfHS5IKFSqkOXPmaNKkSQoLC1P58uXVu3dvPfzww5Z0FgAAFGwkxayTq6BNkmrVquVwXrZsWY0dO9a0DgEAACCrXAdtN/LZZ58pISFBw4cPN/vWAACggGMhgnVMX+Y5d+5chYSEmH1bAACAO5rpmTYAAHDnItFmHYI2AABgGoZHrcMuuAAAAC6ATBsAADANiTbrkGkDAABwAWTaAACAaZjTZp0cg7ZWrVrl6YYxMTF57gwAAHBtxGzWyTFoO3XqVJ5vSpQNAABgrhyDtlmzZt3KfgAAgNsAeRvr5Bi0PfTQQ7eyHwAAALgOFiIAAADTMEXKOgRtAADANMRs1mGfNgAAABdApg0AAJiG4VHrkGkDAABwAXdcpi00eWR+dwG4I7XyHJnfXQDuSH/aR9/aBkm0WYZMGwAAgAvIMdP21Vdf3dSN+/Xrd1PXAwAA18OcNuvkGLR9+umnefrh7Xa7bDYbQRsAAHcggjbr5Bi0vfbaa/zwAAAABUSOQdvAgQNvZT8AAMBtgHyPdSxZiHDhwgUrbgsAAHDHytWWH5GRkVqyZIlOnz6t5ORk2e124zu73a6rV6/q/Pnz2rlzp3bv3m16ZwEAQMHG1CrrOB20/f333+rSpYsuXbpkBGs2m83hWEoP3kqWLGlBVwEAQEFHzGYdp4O2L7/8UhcvXlS9evXUrl07bdu2Tf/97381atQoJSUlad26dfrzzz91zz33aPHixVb2GQAA4I7j9Jy2TZs2ycfHR99++626d++uTp06yW63q0KFCurRo4e++uorDRo0SEeOHNH8+fOt7DMAACigbDabJR/kImiLiYlRrVq15O3tLUkKDAyU3W53mLv2yiuvyM/PT0uXLjW/pwAAAHcwp4dHvby8VKRIEeO8VKlSKlasmMLDw40yNzc3PfDAAyxCAADgDkVWzDpOB21Vq1bVwYMHHcruuusu7d2716EsJSVFFy9eNKd3AADApRCzWcfp4dHmzZvrxIkTGj9+vBISEiRJdevW1fHjx7Vu3TpJ0smTJ7V582ZVrFjRmt4CAADcoZwO2vr06aOKFStq5syZGjJkiCSpR48ecnNzU//+/dW1a1d16NBBV65cUdu2bS3rMAAAKLhYiGAdp4O2kiVLat68eeratatq1aolKX3IdNy4cfLw8NDOnTuVkJCgNm3a6OWXX7aswwAAAHeiXL0RoXTp0nr//fcdytq3b69WrVrpyJEjqlChgsqUKWNqBwEAgOuwuZEVs0qugraceHt764EHHjDjVgAAAMiG00HbkiVLcnXjDh065LIrAADA1TH9zDpOB23Dhw93aiKg3W6XzWYjaAMA4A7EogHrOB20Pfvss9n+QaSmpurSpUvavXu3IiMj1bZtWz300EOmdhIAAOBO53TQ9uGHH173+7S0NE2cOFGzZs3SCy+8cNMdAwAArodEm3Wc3vLjhjdyc9Mbb7yhcuXKafLkyWbdFgAAADJp9WgGm82m++67T+vXrzfztgAAwEUwp806pgZtkhQeHi673W72bQEAgAsgaLOO00FbZGRkjt+lpqbq/Pnzmj17to4eParGjRub0jkAAACkczpoa968+Q2jZ7vdLg8PDw0YMOCmOwYAAFwPiTbrOB20VaxYMcfv3Nzc5O3trYCAAPXq1Yu3IwAAAJjM6aBt5cqVVvYDAADcDki1WcbpLT+2bNmio0eP3rDejh07NG/evJvqFAAAcE02m82SD3IRtPXs2VNff/31DevNmDFD48aNu6lOAQAAwFGOw6NLly5VamqqQ9mJEyeu++L4S5cuadOmTXJzM23PXgAA4EIKalJsxYoVWrx4sXbv3q3Y2FgVL15clStXVuvWrdWxY0eVKlXK8j5ER0erXbt2io2NVaVKlXI99SzHoC0sLEyzZ882UpI2m007d+7Uzp07r3tDu92up59+OledAAAAsMLFixc1ZMgQrVu3zqE8JiZGMTExCgsL0/Tp0zVu3Dg1a9bM0r68//77io2NzfP1OQZtgwYN0pUrV4yNchcsWCB/f389+OCD2da32WwqVKiQ/P391blz5zx3CAAAuC6bW8FJtSUlJenFF19UWFiYUVarVi3dfffdiomJ0YYNG5SUlKTo6Gj1799fM2fOVIMGDSzpyy+//KIVK1bc1D1yDNqKFSumDz74wDhfsGCBateurTFjxtxUgwAAALfClClTjIDNx8dHkydPVnBwsPF9VFSUhg4dqs2bNys5OVmDBw/WihUrVKRIEVP7ce7cOVPiJ6cnnx04cEAff/yxpPSU4rWd2bNnz013BgAAuDabzZpPbkVGRiokJMQ4nzhxokPAJkllypTR119/rcDAQEnpQdzs2bNv6vmz89577ykuLu6m75OrFQO7du1Su3btNHDgQIfyTZs2qVOnTmrXrp0OHTp0050CAACuqaBs+bFo0SIlJSVJkho2bKimTZtmW8/b21vDhw83zn/66ae8PXgOFi5cqFWrVkmS6tate1P3cjpoO3TokHr27Knw8PAsacMKFSqoQYMGCg8PV9euXRUeHn5TnQIAALgZoaGhxvGTTz553bqNGjWSn5+fJOnUqVOmjR6ePXtWY8eOlSTVqFFDr7322k3dz+mgberUqUpKStK4ceP07bffOnzXoEEDzZ49W+PGjVNiYqI+//zzm+oUAABwTQUh03b58mXt3bvXOL92WDS7PterV88437BhQ+4eOgcjRozQpUuX5O7urrFjx8rLy+um7ud00BYWFqY6deqoQ4cOOdbp0KGDatasqfXr199UpwAAAPIqPDxcaWlpkiQvLy9VqVLlhtfUqFHDODZjqtfcuXONbUaef/551a5d+6bv6XTQduHCBZUrV+6G9SpVqqSEhISb6hQAAHBNBWEhwqlTp4zjSpUqOZWpK1++fLbX58WpU6c0fvx4SdJdd92lQYMG3dT9Mjj9wvhKlSpp165dSk1Nlbu7e7Z10tLStHfvXocHBwAAd46C8J7Q6Oho4zhjrtqN+Pr6GscXLlzIc9t2u13vvPOOEhIS5ObmprFjx6pQoUJ5vl9mTmfaHn/8cZ09e1ajRo1SSkpKlu/T0tI0btw4nTp1So8++qgpnQMAAJDS32wQERGR5XPx4sUsdTOP+DkbMHl7e2d7fW7NmTNHGzdulCT17t37pleMZuZ0pu2FF17QsmXLNH/+fP35559q2rSpKlSoICl9dcSGDRt05swZVahQQa+88oppHQQAAK7DqkxbSEiIpk6dmqV8wIABWbYiy9jqQ3I+aPPw+CckSk5OzlMfT5w4oYkTJ0qSqlWrpsGDB+fpPjlxOmgrXry4QkJCNHLkSP35559atGhRljpNmjTRmDFj5OPjY2YfAQDAHa5379565plnspSXKFEiS5mb2z8DiTlN6bqezNc7Ky0tTW+//bYSExPl5uamDz/8UIULF871fa7H6aBNSp+k99VXXykyMlKbN29WVFSUUlJSVKZMGdWrV0/+/v6KjIzU1KlTNWDAAFM7CgAACj6rprSVKFEi2wAtO5mHOrOb0pWdzPXysjXHrFmztHXrVklSjx49LHmHaa6CtgzlypVT+/btHcrWrFmjjz/+WKtXr1ZqaipBGwAAd6CCsBAhc9CWmJjo1DWZ62W+3hl///23Jk2aJEmqWrWqhg4dmqvrnZWnoC1DVFSUFi5cqHnz5unMmTOy2+2SJH9/f1M6BwAAkFuZp2nFxsY6dU3meqVKlXK6rYxh0StXrshms+mjjz4y/YXzGfIUtP3111+aO3euVq5cqdTUVNntdpUsWVJt27bV008/rTp16pjcTQAA4AoKQqatevXqxvHZs2eduiZzvUqVKjnd1unTp7Vjxw5J6dt99OjRw6nrTp06ZbyoXkofXm3YsOF1r3E6aIuOjtbChQs1f/58RUREGFk1m82mzz77TC1atJCnp6eztwMAALCEv7+/PD09lZycrLi4OEVFRalMmTLXvSbze9MDAgKs7mKe3DBo27Bhg+bOnavQ0FClpKTIbrfr3nvvVceOHbVkyRLt27dPjz322K3oKwAAKOAKQKJNHh4eqlmzppEB2759u1q3bp1jfbvdrm3bthnn9evXd7qtokWLqkuXLk7VPXfunFatWiUpfd5c5vUBZcuWveH1OQZt3333nebNm6cTJ04Yw59PPvmknn32Wd13332SpOXLlzvVSQAAgFupdevWRtC2dOnS6wZt69evN96iULZsWdWsWdPpdnx9fTV69Gin6m7atMkI2nJzXYYcg7YJEyaocOHCat++vZ544gk1a9bMYeM5AACAa9ncCkCqTVKbNm00ceJEJScn648//tDatWv18MMPZ6mXmJhovCdUkjp37pynfdpuhev26urVq9q1a5fWr1+vjRs3Ki0t7Vb1CwAAuKCC8MJ4KX1v2T59+khKH/4cPHiwQkNDHeqcP39e/fr108GDByVJpUuXNq7JLCIiQoGBgcYnuxcM3Ao5ps6WLl2qhQsXaunSpfr+++81Z84clS5dWk899ZQ6duyou++++1b2EwAAIFdeffVVrV27Vvv371d8fLz69++voKAgBQUFKS4uTuvXr9fVq1clpc+DmzBhgooVK5bPvc5Zjpm2e+65R8OHD9eaNWs0depUtWzZUhcuXND06dPVvn17/etf/9KJEyduZV8BAEABZ7Pon7zw9vbWjBkzFBwcbJQdOHBAS5Ys0apVq4yArUSJEpoyZYqaNGliym9glRtOUnN3d9ejjz6qRx99VDExMfrll1+0aNEi7dmzR1L6lh8vvvii2rVrp8cee0zFixe3vNMAAADO8PX1VUhIiJYvX66lS5cqLCxM0dHR8vLyUrVq1dS8eXN1795dfn5++d3VG7LZMzZcy6W9e/dq0aJF+vXXXxUXFyebzSYPDw89/PDDateundq1a2d2X02RmsK8PCA/tPIcmd9dAO5If9pzt0LxZq3686gl923ZovqNK93m8hy0ZchYlbFo0SKtX79eqampstls2r9/v1l9NBVBG5A/CNqA/HGrg7Y/V/9tyX1bNL/Lkvu6kpvew8PT01Nt2rRRmzZtFBUVpcWLF2vJ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qOeff1579+6Vn5+fGjdurMTERG3YsEHr1q3TyJEj1bVrV0ufEcBtxA4gzzZu3GgPCAiwt2zZMsc6mzZtst9///32gIAA+/r1643yli1b2gMCAuydOnWyJyUl2e12uz01NdVut9vtf/31lz0gIMDeokUL+6FDh4xrEhIS7P369bMHBATYJ06caJTv2rXLHhgYaG/cuLE9PDzcKD948KA9ODg42z4GBATY7733XuM8NTXV/tRTT9kDAgLsn332mT0tLc347rPPPrMHBATYX3zxRaOsd+/e9oCAAPvGjRsd7tutWzd7QECAfcKECfaUlBSjfN26dfZatWrZ69evbz9//rxR3rdvX3tAQIB97NixRpspKSn2UaNG2QMCAuwBAQH2hQsX5vj7ZnDmzyKzXbt22QMCAuyPPfaYPTo62uG7GTNmGN9lltGfFi1a2E+cOGGUb9q0yV6rVi17zZo17SdPnjTK33jjDXtAQID9zTfftF++fNko37t3r71hw4b2+++/3+HPt0ePHvaAgAD7li1bnHoGAHcW5rQBJoiNjdUbb7zh8Hn99df19NNPq2fPnkpOTlaPHj3UqFGjLNd269ZNnp6ekiQ3t/S/kt99950k6T//+Y/uueceo663t7c+/PBDFS5cWHPmzFFSUpIkae7cubLb7Xr99dcd5qkFBATo9ddfd+oZduzYoQMHDqhmzZoaMGCAwyKFV199VUFBQUpJSTHazM7OnTu1bds23X///Ro2bJjc3d2N75o0aaLu3bvr0qVLWrBggaT0YdE///xTFSpU0BtvvGG06e7urrfffjtLZtJM8fHxevzxxzVkyBCVKlXK4buMIeXTp09ne+3QoUNVpUoV4/yhhx5S9+7dlZSUpIULF0pKH2b+7bffVLZsWY0ePVqFCxc26t93330aOHCgkpOTNXv2bLMfDcBtiuFRwASJiYlaunSpQ5mXl5dKlSqlli1bqmPHjnr88cezvfbaOV6pqanGPl0NGzbMUr9UqVK67777tH37du3bt0916tQx9kpr1qxZlvqtWrXSyJEjb/gMmzdvliSHocsM7u7u+vnnn294j02bNklKD2KyW5n68MMPa/r06dq8ebNeeeUVo83GjRvLw8Px/448PT3VrFkzzZ0794bt5kXjxo3VuHFjh7KrV6/q6NGj2rFjh2w2m5KTk7Nc5+7urjZt2mQpb9mypaZPn2782W3ZskWpqamqU6eOQ8CWoWnTppL++d0B4EYI2gATVKpUSStXrszTtSVLlnQ4v3Dhgq5cuSJJql+//nWvPXPmjOrUqaNz585JksqVK5elTtmyZY1M3vVERUVJksqXL+9Uv3PqjyTNmDFDM2bMyLHe2bNnJem6/ZbSf1crXblyRQsXLtTKlSt15MgRRUZGym63y2az5fimh3LlymUJMKV/freMZ8r4LZYvX67AwMAc+5DxWwDAjRC0AfksY0g0Q8abE4oUKaJHH330uteWKVNGkoysVk6BRnZBxrVSUlJuWOdGMvZuq1OnjsPw4bWuHY7MSebhVbNFRkaqR48eOnHihEqUKKEHHnhATzzxhIKCghQcHKxWrVpl+xaLQoUKZXu/jN8+I0DO+C0CAgKuG7TdzF55AO4sBG1AAePj4yNPT0+lpKRo/PjxTgUuZcuW1bFjx3T69OkswdKlS5d0+fLlG94jIwDMKfPz559/KjExUY0bN5aPj89179G8eXP179//hm1mZKdymjuWkf2zwqeffqoTJ07o2Wef1ahRoxyykfHx8Tm+diynPmU8Q0bWMOO3eOCBB/Thhx+a2XUAdygWIgAFjJeXl2rXrq3k5GRt2LAhy/dJSUnq2LGjnnvuOUVEREiSMTcrNDQ0S/01a9Y41W69evUkKdstQux2u8aMGaNhw4YZGbnsMkQNGjQw2swu6/fTTz/pySef1Oeffy5JCg4Olpubm9atW6erV69maXPt2rVO9T0vdu3aJUl66aWXsgwf//XXX8bxtW9+iI+PN67N7Pfff5f0zzzEjN9i48aNWZ5NklavXq0nnnjCqfmGACARtAEFUu/evSVJ77//vg4dOmSUp6Sk6IMPPtDevXuVmJhobGb73HPPydPTU59//rl2795t1D958qQmTJjgVJuNGjXSXXfdpR07dmj69OkO333xxRc6efKkGjduLD8/P0n/DBNeunTJqBccHKygoCDt2LFDkyZNchhy3bdvnyZNmqTDhw8bw4V+fn5q27atzp8/r5EjRxoT/+12uz799FOFh4c794PlQcbK1GvnIu7cuVMffPCBcZ5dwPXuu+86bJQcGhqqefPmqVixYnr22WclSVWrVlXLli0VERGh999/3yHbGRERoVGjRunvv//WXXfdZepzAbh9MTwKFECPP/64evfurZCQEHXs2FE1a9aUn5+f9uzZozNnzqhUqVL65JNPjPr33HOP/v3vf+vDDz9U165dFRwcLE9PT23YsEH33HOPIiMjb9imm5ubPvnkEz3//PMaP368Fi1apOrVqys8PFxHjhyRn5+fPvroI6O+v7+/JGnUqFH65ZdfNGzYMPn7++uTTz5R79699fXXX+vnn3/Wfffdp/j4eG3dulVpaWnq2bOnw1y9d955R/v379eiRYu0adMm1apVS0eOHNGRI0dUu3btbLNa13PmzBk1adIkx+87d+6sQYMGqVevXlq3bp0mTJig//73v6pYsaIiIiK0d+9elSxZUmXKlFFUVJTOnz/vMORcpkwZXbp0Sa1bt9ZDDz2kCxcuaNu2bfLw8ND48eNVunRpo+6YMWPUs2dPLV68WKtXr1atWrWUmpqqzZs3KykpSY899ph69OiRq+cDcOci0wYUUO+8844+//xzPfjggwoPD9eaNWtUuHBh9ezZU0uWLMny3tCePXtq2rRpqlevnnbs2KEdO3aobdu2+vbbb52e7H7fffdp0aJF6tSpky5duqSVK1cqLi5OHTt21IIFCxxWeb7yyitq0aKFLl26pL/++kvHjh2TlP5O0yVLluj5559XoUKFtG7dOoWHh6tBgwaaMmWKRowY4dBm6dKl9eOPP+qFF16QJK1atUoeHh6aMmWKWrRokevfLS0tTefPn8/xEx8fLyl93t20adNUv359nThxQn/99ZeSk5PVrVs3/fzzz3riiSckZc3EFStWTHPmzFFwcLA2bNig/fv3q2nTpvrhhx+yLBzx8/PT/PnzNWDAAJUuXVobN27Unj17dO+992rMmDH69NNPLV1sAeD2YrPntNwMAAAABQaZNgAAABdA0AYAAOACCNoAAABcAEEbAACACyBoAwAAcAEEbQAAAC6AoA0AAMAFELQBAAC4AII2AAAAF/D/AT6efctfwxRDAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "# Assuming `cm` is previously defined\n",
    "cm_normalized = np.round(cm/np.sum(cm, axis=1).reshape(-1, 1), 2) \n",
    "\n",
    "# Increase the size for all fonts\n",
    "sns.set(font_scale=3)  # Adjust this value to increase/decrease font size\n",
    "\n",
    "# Create a new figure with a specific size\n",
    "fig, ax = plt.subplots(figsize=(10, 8))\n",
    "\n",
    "sns.heatmap(cm_normalized, cmap=\"Purples\", annot=True, ax=ax, annot_kws={\"size\": 22})  # Adjust the size in \"annot_kws\" for annotation fonts\n",
    "ax.set_xlabel(\"Predicted Label\", fontsize=22)  # Adjust fontsize as needed\n",
    "ax.set_ylabel(\"Actual Label\", fontsize=22)  # Adjust fontsize as needed\n",
    "\n",
    "# Adjust the tick label size\n",
    "ax.tick_params(axis='both', which='major', labelsize=20)\n",
    "\n",
    "# Save the figure\n",
    "fig.savefig(\"confusion_matrix.png\", dpi=300)\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "# Reduce dataset dimensions to 2D using PCA\n",
    "pca = PCA(n_components=2)\n",
    "X_train_2D = pca.fit_transform(X_train)\n",
    "X_test_2D = pca.transform(X_test)\n",
    "\n",
    "# Train SVM classifier\n",
    "classifier = RandomForestClassifier(n_estimators=250, max_depth=25, max_features='sqrt', class_weight= \"balanced\" , random_state=42)\n",
    "classifier.fit(X_train_2D, y_train)\n",
    "\n",
    "# Create a meshgrid\n",
    "h = 0.02  # step size in the mesh\n",
    "x_min, x_max = X_train_2D[:, 0].min() - 1, X_train_2D[:, 0].max() + 1\n",
    "y_min, y_max = X_train_2D[:, 1].min() - 1, X_train_2D[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
    "\n",
    "# Plot decision boundaries\n",
    "Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "Z = Z.reshape(xx.shape)\n",
    "plt.contourf(xx, yy, Z, alpha=0.8)\n",
    "plt.scatter(X_train_2D[:, 0], X_train_2D[:, 1], c=y_train, edgecolors='k', marker='o', label='Training Data')\n",
    "plt.scatter(X_test_2D[:, 0], X_test_2D[:, 1], c=y_test, edgecolors='k', marker='s', label='Testing Data')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.title('RFC Decision Boundary')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "11f5c4aeecadc3e88c152309abda6ed29843603433e3c3abe7ec8b133e6a3d72"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
